Skill

জাভাস্ক্রিপ্ট ক্লাস (JS Class)

Web Development- জাভাস্ক্রিপ্ট (JavaScript) - জাভাস্ক্রিপ্ট ক্লাস (JS Class) -
286
286

জাভাস্ক্রিপ্টে class একটি ব্লুপ্রিন্ট বা টেমপ্লেট হিসেবে কাজ করে, যা অবজেক্ট তৈরি করার জন্য ব্যবহৃত হয়। এটি ES6 (ECMAScript 2015) থেকে পরিচিত হয়েছে এবং প্রোটোটাইপ-ভিত্তিক অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং (OOP) ধারণাকে ক্লাস-ভিত্তিক শৈলীতে রূপান্তর করে। class এর মাধ্যমে কোড আরও পাঠযোগ্য, রক্ষণাবেক্ষণযোগ্য এবং সংগঠিত হয়।


ক্লাস ডিফাইন করা

ক্লাস ডিফাইন করতে class কীওয়ার্ড ব্যবহার করা হয়। একটি ক্লাসের মধ্যে কনস্ট্রাক্টর (constructor) এবং মেথডস (methods) থাকতে পারে।

ক্লাসের উদাহরণ

class Person {
    // কনস্ট্রাক্টর
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }

    // মেথড
    greet() {
        console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
    }
}

const person1 = new Person("Alice", 25);
person1.greet();  // আউটপুট: Hello, my name is Alice and I am 25 years old.

এখানে, Person একটি ক্লাস যা name এবং age প্রপার্টি গ্রহণ করে এবং একটি greet মেথড সংজ্ঞায়িত করে।


কনস্ট্রাক্টর (Constructor)

ক্লাসের মধ্যে constructor একটি বিশেষ মেথড যা নতুন অবজেক্ট তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি সাধারণত ক্লাসের প্রপার্টি বা ফিল্ড ইনিশিয়ালাইজ করতে ব্যবহৃত হয়।

class Car {
    constructor(make, model) {
        this.make = make;
        this.model = model;
    }

    displayInfo() {
        console.log(`Car make: ${this.make}, model: ${this.model}`);
    }
}

const car1 = new Car("Toyota", "Corolla");
car1.displayInfo();  // আউটপুট: Car make: Toyota, model: Corolla

এখানে, constructor মেথডটি ক্লাসের অবজেক্ট তৈরি করার সময় make এবং model প্রপার্টি ইনিশিয়ালাইজ করছে।


ইনহেরিটেন্স (Inheritance)

জাভাস্ক্রিপ্টে ক্লাসের মধ্যে ইনহেরিটেন্স (Inheritance) সুবিধা রয়েছে, যার মাধ্যমে একটি ক্লাস অন্য ক্লাসের প্রপার্টি ও মেথড উত্তরাধিকারসূত্রে পেতে পারে। এটি extends কীওয়ার্ডের মাধ্যমে করা হয়।

ইনহেরিটেন্স উদাহরণ

class Animal {
    constructor(name) {
        this.name = name;
    }

    speak() {
        console.log(`${this.name} makes a sound.`);
    }
}

class Dog extends Animal {
    constructor(name, breed) {
        super(name);  // প্যারেন্ট ক্লাসের কনস্ট্রাক্টর কল
        this.breed = breed;
    }

    speak() {
        console.log(`${this.name} barks.`);
    }
}

const dog1 = new Dog("Buddy", "Golden Retriever");
dog1.speak();  // আউটপুট: Buddy barks.

এখানে, Dog ক্লাস Animal ক্লাস থেকে ইনহেরিট করেছে এবং speak মেথডটি ওভাররাইড করেছে।


স্ট্যাটিক মেথড (Static Methods)

ক্লাসের স্ট্যাটিক মেথড একটি বিশেষ ধরনের মেথড যা ক্লাসের ইনস্ট্যান্স (অবজেক্ট) থেকে নয়, সরাসরি ক্লাস থেকে কল করা হয়। এটি সাধারণত ক্লাস-ভিত্তিক কাজ বা সহায়ক ফাংশন হিসেবে ব্যবহৃত হয়।

স্ট্যাটিক মেথড উদাহরণ

class MathOperations {
    static add(a, b) {
        return a + b;
    }

    static multiply(a, b) {
        return a * b;
    }
}

console.log(MathOperations.add(3, 4));      // আউটপুট: 7
console.log(MathOperations.multiply(3, 4)); // আউটপুট: 12

এখানে, add এবং multiply দুটি স্ট্যাটিক মেথড ক্লাস থেকেই কল করা হয়েছে, কোনো ইনস্ট্যান্স তৈরি না করেই।


প্রাইভেট প্রপার্টি এবং মেথড (Private Properties and Methods)

জাভাস্ক্রিপ্ট ES2022-এ ক্লাসে প্রাইভেট প্রপার্টি ও মেথড সমর্থন করেছে, যার মাধ্যমে ক্লাসের ভিতরে প্রপার্টি বা মেথড শুধু সেই ক্লাস থেকেই অ্যাক্সেস করা যায়, বাইরের কোনো কোড থেকে নয়। এটি # চিহ্ন দিয়ে নির্ধারণ করা হয়।

প্রাইভেট প্রপার্টি উদাহরণ

class Person {
    #name;  // প্রাইভেট প্রপার্টি

    constructor(name, age) {
        this.#name = name;  // প্রাইভেট প্রপার্টি অ্যাসাইন
        this.age = age;
    }

    greet() {
        console.log(`Hello, my name is ${this.#name} and I am ${this.age} years old.`);
    }
}

const person1 = new Person("Alice", 25);
person1.greet();  // আউটপুট: Hello, my name is Alice and I am 25 years old.

console.log(person1.#name);  // Error: Private field '#name' must be declared in an enclosing class

এখানে, #name একটি প্রাইভেট প্রপার্টি, যা শুধুমাত্র Person ক্লাসের ভিতরে অ্যাক্সেস করা যাবে।


ক্লাসের অন্যান্য বৈশিষ্ট্য

গেটার এবং সেটার (Getters and Setters)

গেটার এবং সেটার মেথডের মাধ্যমে ক্লাসের প্রপার্টি অ্যাক্সেস এবং পরিবর্তন করা সহজ হয়, এবং প্রপার্টির মান নিয়ন্ত্রণ করা যায়।

class Rectangle {
    constructor(width, height) {
        this.width = width;
        this.height = height;
    }

    // গেটার
    get area() {
        return this.width * this.height;
    }

    // সেটার
    set area(value) {
        this.height = value / this.width;
    }
}

const rect = new Rectangle(10, 5);
console.log(rect.area);  // আউটপুট: 50

rect.area = 100;
console.log(rect.height);  // আউটপুট: 10

এখানে, area গেটার মেথডটি রেক্টেঙ্গলের ক্ষেত্রফল রিটার্ন করে এবং সেটার মেথডটি ক্ষেত্রফল পরিবর্তন করলে উচ্চতা আপডেট করে।

ক্লাস এক্সপ্রেশন (Class Expressions)

ক্লাস ডিক্লারেশন ছাড়াও, জাভাস্ক্রিপ্টে ক্লাস এক্সপ্রেশন ব্যবহার করে ক্লাস ডিফাইন করা যায়। এটি ফাংশন এক্সপ্রেশন এর মতোই।

const Car = class {
    constructor(make, model) {
        this.make = make;
        this.model = model;
    }

    displayInfo() {
        console.log(`Car make: ${this.make}, model: ${this.model}`);
    }
};

const car1 = new Car("Honda", "Civic");
car1.displayInfo();  // আউটপুট: Car make: Honda, model: Civic

ক্লাস বনাম ফাংশন

জাভাস্ক্রিপ্টে ক্লাস ব্যবহার করা ফাংশন-ভিত্তিক পদ্ধতির তুলনায় আরো পরিষ্কার এবং সংগঠিত কোড লেখার সুযোগ দেয়। তবে, ক্লাস আসলে জাভাস্ক্রিপ্টের প্রোটোটাইপ ভিত্তিক মডেলের উপর ভিত্তি করে তৈরি, তাই কার্যকরভাবে তারা একইভাবে কাজ করে।

উদাহরণ: ফাংশন vs ক্লাস

ফাংশন ভিত্তিক

function Person(name, age) {
    this.name = name;
    this.age = age;
}

Person.prototype.greet = function() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
};

const person1 = new Person("Bob", 30);
person1.greet();  // আউটপুট: Hello, my name is Bob and I am 30 years old.

ক্লাস ভিত্তিক

class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }

    greet() {
        console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
    }
}

const person1 = new Person("Bob", 30);
person1.greet();  // আউটপুট: Hello, my name is Bob and I am 30 years old.

দেখা যাচ্ছে, ক্লাস ভিত্তিক কোড আরও পরিষ্কার এবং সংগঠিত।


সারাংশ

জাভাস্ক্রিপ্টের ক্লাস একটি শক্তিশালী বৈশিষ্ট্য যা অবজেক্ট ও শ্রেণিভিত্তিক প্রোগ্রামিং ধারণা সমর্থন করে। এটি প্রোটোটাইপ-ভিত্তিক জাভাস্ক্রিপ্টের জন্য একটি সংগঠিত উপায় সরবরাহ করে। ক্লাসে কনস্ট্রাক্টর, মেথড, ইনহেরিটেন্স, স্ট্যাটিক মেথড, প্রাইভেট প্রপার্টি ও মেথডের মতো বৈশিষ্ট্য রয়েছে, যা কোডকে আরো সুশৃঙ্খল ও পাঠযোগ্য করে তোলে। ক্লাস ব্যবহার করে বড় এবং জটিল প্রজেক্টগুলির কোড রক্ষণাবেক্ষণ সহজ হয় এবং ডেভেলপারদের জন্য কোডের কাঠামো বোঝা সহজ হয়।


অতিরিক্ত টিপস

  • ক্লাস-ভিত্তিক প্যাটার্ন শিখুন: বিভিন্ন ক্লাস-ভিত্তিক ডিজাইন প্যাটার্ন যেমন সিঙ্গলটন, ফ্যাক্টরি, এবং অবজারভার প্যাটার্ন শিখুন, যা আপনার কোডকে আরও কার্যকরী করে তুলতে সাহায্য করবে।
  • প্রাইভেট এবং পাবলিক প্রপার্টি ব্যবহার করুন: ক্লাসে প্রাইভেট প্রপার্টি এবং মেথড ব্যবহার করে ডেটা হাইডিং এবং ইনক্যাপসুলেশন বজায় রাখুন।
  • ক্লাস এক্সপ্রেশন ও ডিক্লারেশন অনুশীলন করুন: ক্লাস এক্সপ্রেশন এবং ডিক্লারেশনের মধ্যে পার্থক্য বুঝে যথাযথভাবে ব্যবহার করুন।
  • মডিউল সাথে ক্লাস ব্যবহার করুন: জাভাস্ক্রিপ্ট মডিউল সিস্টেম ব্যবহার করে ক্লাসগুলি বিভিন্ন ফাইলে ভাগ করুন, যা কোডের পুনরায় ব্যবহারযোগ্যতা ও সংগঠন বৃদ্ধি করবে।

ক্লাস সম্পর্কে গভীর জ্ঞান অর্জন করলে আপনার জাভাস্ক্রিপ্ট প্রোগ্রামিং দক্ষতাও বৃদ্ধি পাবে, যা আরও উন্নত এবং কার্যকরী কোড লেখার ক্ষেত্রে সহায়ক হবে।

জাভাস্ক্রিপ্টে class একটি ব্লুপ্রিন্ট বা টেমপ্লেট হিসেবে কাজ করে, যা অবজেক্ট তৈরি করার জন্য ব্যবহৃত হয়। এটি ES6 (ECMAScript 2015) থেকে পরিচিত হয়েছে এবং প্রোটোটাইপ-ভিত্তিক অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং (OOP) ধারণাকে ক্লাস-ভিত্তিক শৈলীতে রূপান্তর করে। class এর মাধ্যমে কোড আরও পাঠযোগ্য, রক্ষণাবেক্ষণযোগ্য এবং সংগঠিত হয়।


ক্লাস ডিফাইন করা

ক্লাস ডিফাইন করতে class কীওয়ার্ড ব্যবহার করা হয়। একটি ক্লাসের মধ্যে কনস্ট্রাক্টর (constructor) এবং মেথডস (methods) থাকতে পারে।

ক্লাসের উদাহরণ

class Person {
    // কনস্ট্রাক্টর
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }

    // মেথড
    greet() {
        console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
    }
}

const person1 = new Person("Alice", 25);
person1.greet();  // আউটপুট: Hello, my name is Alice and I am 25 years old.

এখানে, Person একটি ক্লাস যা name এবং age প্রপার্টি গ্রহণ করে এবং একটি greet মেথড সংজ্ঞায়িত করে।


কনস্ট্রাক্টর (Constructor)

ক্লাসের মধ্যে constructor একটি বিশেষ মেথড যা নতুন অবজেক্ট তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি সাধারণত ক্লাসের প্রপার্টি বা ফিল্ড ইনিশিয়ালাইজ করতে ব্যবহৃত হয়।

class Car {
    constructor(make, model) {
        this.make = make;
        this.model = model;
    }

    displayInfo() {
        console.log(`Car make: ${this.make}, model: ${this.model}`);
    }
}

const car1 = new Car("Toyota", "Corolla");
car1.displayInfo();  // আউটপুট: Car make: Toyota, model: Corolla

এখানে, constructor মেথডটি ক্লাসের অবজেক্ট তৈরি করার সময় make এবং model প্রপার্টি ইনিশিয়ালাইজ করছে।


ইনহেরিটেন্স (Inheritance)

জাভাস্ক্রিপ্টে ক্লাসের মধ্যে ইনহেরিটেন্স (Inheritance) সুবিধা রয়েছে, যার মাধ্যমে একটি ক্লাস অন্য ক্লাসের প্রপার্টি ও মেথড উত্তরাধিকারসূত্রে পেতে পারে। এটি extends কীওয়ার্ডের মাধ্যমে করা হয়।

ইনহেরিটেন্স উদাহরণ

class Animal {
    constructor(name) {
        this.name = name;
    }

    speak() {
        console.log(`${this.name} makes a sound.`);
    }
}

class Dog extends Animal {
    constructor(name, breed) {
        super(name);  // প্যারেন্ট ক্লাসের কনস্ট্রাক্টর কল
        this.breed = breed;
    }

    speak() {
        console.log(`${this.name} barks.`);
    }
}

const dog1 = new Dog("Buddy", "Golden Retriever");
dog1.speak();  // আউটপুট: Buddy barks.

এখানে, Dog ক্লাস Animal ক্লাস থেকে ইনহেরিট করেছে এবং speak মেথডটি ওভাররাইড করেছে।


স্ট্যাটিক মেথড (Static Methods)

ক্লাসের স্ট্যাটিক মেথড একটি বিশেষ ধরনের মেথড যা ক্লাসের ইনস্ট্যান্স (অবজেক্ট) থেকে নয়, সরাসরি ক্লাস থেকে কল করা হয়। এটি সাধারণত ক্লাস-ভিত্তিক কাজ বা সহায়ক ফাংশন হিসেবে ব্যবহৃত হয়।

স্ট্যাটিক মেথড উদাহরণ

class MathOperations {
    static add(a, b) {
        return a + b;
    }

    static multiply(a, b) {
        return a * b;
    }
}

console.log(MathOperations.add(3, 4));      // আউটপুট: 7
console.log(MathOperations.multiply(3, 4)); // আউটপুট: 12

এখানে, add এবং multiply দুটি স্ট্যাটিক মেথড ক্লাস থেকেই কল করা হয়েছে, কোনো ইনস্ট্যান্স তৈরি না করেই।


প্রাইভেট প্রপার্টি এবং মেথড (Private Properties and Methods)

জাভাস্ক্রিপ্ট ES2022-এ ক্লাসে প্রাইভেট প্রপার্টি ও মেথড সমর্থন করেছে, যার মাধ্যমে ক্লাসের ভিতরে প্রপার্টি বা মেথড শুধু সেই ক্লাস থেকেই অ্যাক্সেস করা যায়, বাইরের কোনো কোড থেকে নয়। এটি # চিহ্ন দিয়ে নির্ধারণ করা হয়।

প্রাইভেট প্রপার্টি উদাহরণ

class Person {
    #name;  // প্রাইভেট প্রপার্টি

    constructor(name, age) {
        this.#name = name;  // প্রাইভেট প্রপার্টি অ্যাসাইন
        this.age = age;
    }

    greet() {
        console.log(`Hello, my name is ${this.#name} and I am ${this.age} years old.`);
    }
}

const person1 = new Person("Alice", 25);
person1.greet();  // আউটপুট: Hello, my name is Alice and I am 25 years old.

console.log(person1.#name);  // Error: Private field '#name' must be declared in an enclosing class

এখানে, #name একটি প্রাইভেট প্রপার্টি, যা শুধুমাত্র Person ক্লাসের ভিতরে অ্যাক্সেস করা যাবে।


ক্লাসের অন্যান্য বৈশিষ্ট্য

গেটার এবং সেটার (Getters and Setters)

গেটার এবং সেটার মেথডের মাধ্যমে ক্লাসের প্রপার্টি অ্যাক্সেস এবং পরিবর্তন করা সহজ হয়, এবং প্রপার্টির মান নিয়ন্ত্রণ করা যায়।

class Rectangle {
    constructor(width, height) {
        this.width = width;
        this.height = height;
    }

    // গেটার
    get area() {
        return this.width * this.height;
    }

    // সেটার
    set area(value) {
        this.height = value / this.width;
    }
}

const rect = new Rectangle(10, 5);
console.log(rect.area);  // আউটপুট: 50

rect.area = 100;
console.log(rect.height);  // আউটপুট: 10

এখানে, area গেটার মেথডটি রেক্টেঙ্গলের ক্ষেত্রফল রিটার্ন করে এবং সেটার মেথডটি ক্ষেত্রফল পরিবর্তন করলে উচ্চতা আপডেট করে।

ক্লাস এক্সপ্রেশন (Class Expressions)

ক্লাস ডিক্লারেশন ছাড়াও, জাভাস্ক্রিপ্টে ক্লাস এক্সপ্রেশন ব্যবহার করে ক্লাস ডিফাইন করা যায়। এটি ফাংশন এক্সপ্রেশন এর মতোই।

const Car = class {
    constructor(make, model) {
        this.make = make;
        this.model = model;
    }

    displayInfo() {
        console.log(`Car make: ${this.make}, model: ${this.model}`);
    }
};

const car1 = new Car("Honda", "Civic");
car1.displayInfo();  // আউটপুট: Car make: Honda, model: Civic

ক্লাস বনাম ফাংশন

জাভাস্ক্রিপ্টে ক্লাস ব্যবহার করা ফাংশন-ভিত্তিক পদ্ধতির তুলনায় আরো পরিষ্কার এবং সংগঠিত কোড লেখার সুযোগ দেয়। তবে, ক্লাস আসলে জাভাস্ক্রিপ্টের প্রোটোটাইপ ভিত্তিক মডেলের উপর ভিত্তি করে তৈরি, তাই কার্যকরভাবে তারা একইভাবে কাজ করে।

উদাহরণ: ফাংশন vs ক্লাস

ফাংশন ভিত্তিক

function Person(name, age) {
    this.name = name;
    this.age = age;
}

Person.prototype.greet = function() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
};

const person1 = new Person("Bob", 30);
person1.greet();  // আউটপুট: Hello, my name is Bob and I am 30 years old.

ক্লাস ভিত্তিক

class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }

    greet() {
        console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
    }
}

const person1 = new Person("Bob", 30);
person1.greet();  // আউটপুট: Hello, my name is Bob and I am 30 years old.

দেখা যাচ্ছে, ক্লাস ভিত্তিক কোড আরও পরিষ্কার এবং সংগঠিত।


সারাংশ

জাভাস্ক্রিপ্টের ক্লাস একটি শক্তিশালী বৈশিষ্ট্য যা অবজেক্ট ও শ্রেণিভিত্তিক প্রোগ্রামিং ধারণা সমর্থন করে। এটি প্রোটোটাইপ-ভিত্তিক জাভাস্ক্রিপ্টের জন্য একটি সংগঠিত উপায় সরবরাহ করে। ক্লাসে কনস্ট্রাক্টর, মেথড, ইনহেরিটেন্স, স্ট্যাটিক মেথড, প্রাইভেট প্রপার্টি ও মেথডের মতো বৈশিষ্ট্য রয়েছে, যা কোডকে আরো সুশৃঙ্খল ও পাঠযোগ্য করে তোলে। ক্লাস ব্যবহার করে বড় এবং জটিল প্রজেক্টগুলির কোড রক্ষণাবেক্ষণ সহজ হয় এবং ডেভেলপারদের জন্য কোডের কাঠামো বোঝা সহজ হয়।


অতিরিক্ত টিপস

  • ক্লাস-ভিত্তিক প্যাটার্ন শিখুন: বিভিন্ন ক্লাস-ভিত্তিক ডিজাইন প্যাটার্ন যেমন সিঙ্গলটন, ফ্যাক্টরি, এবং অবজারভার প্যাটার্ন শিখুন, যা আপনার কোডকে আরও কার্যকরী করে তুলতে সাহায্য করবে।
  • প্রাইভেট এবং পাবলিক প্রপার্টি ব্যবহার করুন: ক্লাসে প্রাইভেট প্রপার্টি এবং মেথড ব্যবহার করে ডেটা হাইডিং এবং ইনক্যাপসুলেশন বজায় রাখুন।
  • ক্লাস এক্সপ্রেশন ও ডিক্লারেশন অনুশীলন করুন: ক্লাস এক্সপ্রেশন এবং ডিক্লারেশনের মধ্যে পার্থক্য বুঝে যথাযথভাবে ব্যবহার করুন।
  • মডিউল সাথে ক্লাস ব্যবহার করুন: জাভাস্ক্রিপ্ট মডিউল সিস্টেম ব্যবহার করে ক্লাসগুলি বিভিন্ন ফাইলে ভাগ করুন, যা কোডের পুনরায় ব্যবহারযোগ্যতা ও সংগঠন বৃদ্ধি করবে।

ক্লাস সম্পর্কে গভীর জ্ঞান অর্জন করলে আপনার জাভাস্ক্রিপ্ট প্রোগ্রামিং দক্ষতাও বৃদ্ধি পাবে, যা আরও উন্নত এবং কার্যকরী কোড লেখার ক্ষেত্রে সহায়ক হবে।

টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion